%include	'Macros.inc'
cr	equ	0Dh		;������� �������
lf	equ	0Ah		;������� ������
;
;	������� ���� ���������
;	-----------------------------------------
;
	absolute	80h		;��������� ���� ����� �����-�������� 80h
Lparam	resb	1			;����� ������ �������
Param	resb	1			;������ ���� ������
	segment data			;����������� ������� ������
Lname0	db	81 			;������������ ����� ����� �����
Lname	db	0			;����������� ����� ����� �����
NameFile times	81	db	0	;��� �����
Lognum	dw	0			;���������� ����� �����
Segin	dw	0
Text	db	11,'!!!Super!!!'
BlocPar	times	14	db	0
	segment stack			;����������� ������� �����
	times	64	db	0
	segment	code			;����������� ������� ����
..start:
; "��������" ������������ �������� ������ � ��������. ������� ������
	mov	ax,data			;"��������" ������������ �������� ������
	mov	es,ax			; � �������������� ������� ������ 
	mov	ax,ds			;����������� � Segin ������
	mov	[es:Segin],ax		; ���������
; ������������ ������ ������
	mov	ds,[es:Segin]
	mov	ax,ds
 	mov	bx,data1
	sub	bx,ax
	mov	es,ax
	mov	ah,4ah
	int	21h
	jnc	.M1
	Out_str	MemAllocErr
	jmp	.Exit
; ����������� ������� ����� �����
.M1:	xor	cx,cx			;��������� CX
	mov	cl,[Lparam]		;CL <- ����� ������
	cmp	cx,0			;����� �����������?
	jnz	.M2                     ; ���
	Out_str	MsgFileNotSpec		;��������� �� ���������� ����� �����
	jmp	.Exit
; ��������� ����� � ����� �����
.M2:    mov	ax,data
	mov	es,ax
	dec	cx			;������� ������ � ����� �����(��������)
        mov	[es:Lname],cx           ;�������� � Lname ����� ����� �����
	xor	si,si
	mov	bx,1
.Next:	mov	ax,[Param+bx]           ;���������� ��� �����
	mov	[es:NameFile+si],ax	; � Namefile
	inc	si
	inc	bx
	loop	.Next
	mov	[es:NameFile+si],byte 0	;������ �������� �����
; �������� �����
	mov	ax,data                 ;"��������" ������������ �������� ������
	mov	ds,ax                   ; � �������� ������� ������ 
	mov	ax,Text
	mov	[BlocPar+2],ax		;�������� � ���� ���������� ������� �
	mov	[BlocPar+4],es		; �������� ���������� ������
	mov	dx,NameFile		;DX <- �������� ����� �����
	mov	bx,BlocPar		;BX <- �������� ����� ����������
	mov	ax,4b00h		;�������� � �������� ���������
	int	21h			;�������� �������� ���������
	jnc	.Exit			;���� �������
	Out_str	ErrorOpenFile		;��������� �� ������ �������� �����
;�����
.Exit:	mov	ax,4c00h                ;������� � DOS
	int	21h			
MemAllocErr	db	'Memory allocation error', cr, lf, '$'
MsgFileNotSpec	db	'File name not specified', cr, lf, '$'
ErrorOpenFile	db	'Error open file', cr, lf, '$'
; ��������� ����������� �������
	segment	data1	data